compile-song compiles a def-timesheet description to a folder described in output-path using a resolution value to interprete start/stop information on the def-time-sheet.
There can be any number of definition lines in one compile-song. The definition lines can be both def-timesheet or def-tonality-change definitions. Def-timesheet contains instrument names and the start/stop information string. Def-tonality-change requires a tonality description(s) contained in a variable and a newly defined variable incorporating both tonality descriptions and the tonality change definition string. Def-tonality-change defines a sequence of tonality changes. The change points are marked as dots in the definition string.
The tonalities are taken from the input atom, which contains the note lists returned by activate-tonality. The output atom is the actual tonality name that is to be used in def-timesheet definition. Note that there can be any number of tonality change definitions in any place in compile-song.
compile-song is used when the musical material can be organised by a graphic scoring mechanism using a beat/space graphic combination "-" and " " responding to a single resolution. Think of this resolution as a single zone length but independent of tonality control which is defined separately and graphically with tonality change points. The "-" and " " control the progress of a symbol pattern. They start and stop the pattern "--- - - ". When a long pattern reaches a " " progress through the pattern is halted until a "-" appears. If the pattern is nested (( . . )) the pattern will restart at each "-".
(setq symbols '(a b c d e f g))
(def-symbol
test1 symbols
)
(setq tonals (activate-tonality (blues1 c 5) (chromatic c 6)))
(compile-song "ccl;output:" 1/4 "part2"
; |---|---|---|---|
changes tonals ".... .. ... "
test1 changes "- - -- - --- --"
)
Example
In this example the resolution of the time sheet is 1/1. This means that every "-" sign in the start/stop string lasts exactly one bar of 4/4, the value of a whole note. The lines beginning with comment signs ; can be used to represent the song structure. The tonalities of the instruments (like master in the example are defined inside compile-song.
This example demonstrates how the timesheet can be used at different resolutions to control the organisation of start/stop events more precisely. Using 1/4 as the resolution changes the timesheet resolution accordingly. Now we need four columns to represent one bar of music.
(setq symbols '(a b c d e f g))
(def-symbol
test1 symbols
test2 symbols
test3 symbols
test4 symbols
)
(def-length
default '1/16
)
(setq tonals (activate-tonality (blues1 c 4) (chromatic c 6))